home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / bixdos.arc / DOSNOTES < prev    next >
Text File  |  1986-11-24  |  7KB  |  168 lines

  1. TITLE: collected MS-DOS secrets
  2.                       Some MS-DOS info                           86/08/28
  3.                       ================
  4.  
  5.                     (collected from ms.dos/secrets)
  6.  
  7.  
  8. Function 34h: Return INDOS flag location
  9.  
  10.         on entry:       AH = 34h
  11.         on exit:        ES:BX = pointer to the "INDOS" flag - a byte
  12.                                 which is non-zero when DOS is busy and
  13.                                 shouldn't be called.
  14.  
  15.         Notes:          It seems that this flag shouldn't be trusted. The
  16.                         proper way to determine if a routine is busy is to
  17.                         intercept calls to it - set a flag when it gets a
  18.                         call, and reset the flag when it returns.
  19.  
  20.  
  21. Function 37h: Get/Set Switch Char, Device Availability Flag
  22.  
  23.         on entry:       AH = 37h
  24.                         AL =    0 = get switch char
  25.                                 1 = set switch char
  26.                                 2 = get device availability flag
  27.                                 3 = set device availability flag
  28.                         DL = if AL is 1 or 3,
  29.                                 DL contains the switch char
  30.                                 or the device availability flag
  31.  
  32.         on exit:        DL = if AL was 0 or 2,
  33.                                 DL contains the switch char
  34.                                 or the device availability flag
  35.  
  36.         Notes:          The switch character is the character which precedes
  37.                         options on a command line. Normally, this character
  38.                         is the forward slash ('/').
  39.                         The device availability flag is true if devices
  40.                         must be referenced as being in the "\DEV\" directory.
  41.                         If the flag is false, it isn't necessary to prefix
  42.                         the device name with "\DEV\".
  43.  
  44.  
  45.  
  46. Function 4Bh: EXEC
  47.  
  48.         on entry:       AH = 4Bh
  49.                         AL = function number -  0 = load and exec
  50.                                                 1 = same as 0 but don't exec
  51.                                                 2 = load overlay
  52.                         DS:DX = pointer to the command name to load
  53.                         ES:BX = pointer to the parameter block
  54.  
  55.         on exit:        AX = error codes if carry flag set
  56.  
  57.         Notes:  AL=0    Load and Execute the program.
  58.                         This subfunction creates a PSP, using the return
  59.                         address from the caller as the values for the Terminate
  60.                         and Control Break exit handlers. The program whose
  61.                         name is passed throught DS:DX is loaded and executed.
  62.  
  63.                 AL=1    Load, don't EXEC.
  64.                         This subfunction is used by DEBUG.COM and the Manx
  65.                         debugger, DB.EXE. It creates the PSP as per subfunction
  66.                         0 above, but doesn't execute it. The SS:SP and CS:IP
  67.                         registers that would have been set for the EXEC are 
  68.                         instead stored in the four words following the
  69.                         parameter block.
  70.  
  71.                 AL=3    Load overlay.
  72.                         This function simply loads the program. No PSP is
  73.                         created.
  74.  
  75.         The Parameter Block:
  76.  
  77.                 AL=0    WORD  = segment address of environment strings
  78.                         DWORD = pointer to command line to pass
  79.                         DWORD = pointer to first default FCB
  80.                         DWORD = pointer to second default FCB
  81.                 AL=1    WORD  = segment address of environment strings
  82.                         DWORD = pointer to command line to pass
  83.                         DWORD = pointer to first default FCB
  84.                         DWORD = pointer to second default FCB
  85.                         DWORD = initial SS:SP for the loaded program
  86.                         DWORD = initial CS:IP for the loaded program
  87.  
  88.                 AL=3    WORD  = segment address to load the overlay into
  89.                         WORD  = relocation factor to be applied to the overlay
  90.  
  91.  
  92. Function 50h: Set PSP location
  93.  
  94.         on entry:       AH = 50h
  95.                         BX = Segment address of the PSP to become current
  96.  
  97.         on exit:        (none)
  98.         
  99.         Notes:          DOS thinks that the PSP starts at the location
  100.                         passed in BX.
  101.  
  102.  
  103. Function 51h: Get PSP location
  104.  
  105.         on entry:       AH = 51h
  106.  
  107.         on exit:        BX = Segment address of the current PSP
  108.  
  109.         Notes:          same as function 62h. Returns the segment address
  110.                         of the "currently executing process."
  111.  
  112. Function 55h: Create new PSP
  113.  
  114.         on entry:       AH = 55h
  115.                         DX = Segment address of the new PSP
  116.                         SI = Value to be used as the word at [PSP+2]
  117.  
  118.         on exit:        (none)
  119.  
  120.         Notes:          similiar to function 26h.
  121.  
  122.  
  123. DOS PSP Format:
  124. ---------------
  125.  
  126.         00 - Int 20h
  127.         02 - Segment address of top of memory
  128.         04 - not used
  129.         05 - CALL FAR op-code
  130.         06 - word size in bytes of this segment, rounded down to nearest para
  131.         08 - word chosen to cause the CALL far at 05h to reach the jump at 0:C0
  132.         0A - INT 22h (TERMINATE) vector to be restored on exit
  133.         0E - INT 23h (CTRL-BREAK) vector
  134.         12 - INT 24h (CRITICAL ERROR) vector
  135.         16 - segment address of the parent process's PSP
  136.         18 - 20 byte "alias table," contains one byte for each open file. The
  137.              byte relates the process's file number to the DOS file number. Bit
  138.              7 of the byte is set if the file is not inherited by the process's
  139.              children. If the byte is 0ffh, the there isn't a file associated
  140.              with it.
  141.         2C - segment address of the passed environment table
  142.         2E - dword in which DOS stores the callers SS:SP regs when switching
  143.              to its internal stack.
  144.         32 - word containing the maximum number of open files for this process.
  145.              the default value is 20.
  146.         34 - dword pointer to the "alias table," defaults to PSP:18h.
  147.         38 - (? dword -1)
  148.         50 - INT 21h
  149.         52 - RET far
  150.         5C - First default FCB
  151.         6C - Second default FCB (located in second half of first FCB)
  152.         80 - byte number of characters in the command line
  153.         81 - start of the command line. The command line ends in a carriage
  154.              return.
  155.  
  156.  
  157. DOS Memory Control Blocks:
  158. --------------------------
  159.  
  160.     Memory control blocks are paragraph aligned. The first byte is a signature
  161. byte with a value of either 4Dh or 5Ah. A signature of 5Ah indicates that the
  162. block is the last in the chain. The signature is followed by a word containing
  163. the PSP address of the owner of the block. The next word contains the size, in
  164. paragraphs, of the block.
  165.  
  166.  
  167.  
  168.